package sim.pref;

import sim.framework.*;
import sim.forms.*;
import sim.framework.io.*;

public final class ModPref extends ModForm {

    private static final byte DLG_ADDR = 1;
    private static final byte DLG_PORT = 2;
    
    public ModPref(int i, Simlet s) {
        super(i, s);
    }

    protected Form formCreate() {
	return Form.create(m_Simlet, FileNames.FORM_PREF);
    }

    protected String formTitleLabel(final FrmNode node) {
	return getLabel(Resource.LBL_TITLE_APP);
    }
    
    public void work(final Msg msg) {
	DocPref doc;

	switch (msg.getWParam()) {
	case Executable.STATE_INIT:

	    //#ifdef DEBUG_MODPREF
	    //# System.out.println("ModPref::work() ENTERED");
	    //#endif

	    // Recuperar el documento. Si no éxiste ...
	    doc = (DocPref)getDocument(Simlet.MOD_PREF);
	    if (doc == null) {
		// ... crear el documento
		doc = new DocPref(m_Simlet);
		setDocument(Simlet.MOD_PREF, doc);
	    }

	    // Si el documento puede no puede ser cargado ...
	    if (!doc.load()) {
		// Capturar la configuración de usuario.
		// desde un formulario.

		//#ifdef DEBUG_MODPREF
		//# System.out.println("\tSolicitar preferencias de usuario");
		//#endif
		super.work(msg);
		return;
	    }
	    
	    //#ifdef DEBUG_MODPREF
	    //# System.out.println("\tDocumento cargado, continuar");
	    //#endif
	    execNext();

	    //#ifdef DEBUG_MODPREF
	    //# System.out.println("ModPref::work() EXITING");
	    //#endif
	}
    }
    
    protected void formGoToNext() {
	DocPref doc;

	//#ifdef DEBUG_MODPREF
	//# System.out.println("ModPref::formGoToNext() ENTERED");
	//#endif

	doc = (DocPref)getDocument(Simlet.MOD_PREF);

	// Address
	doc.setAddress(getOption(ModPref.DLG_ADDR));

	// Port
	doc.setPort(getOption(ModPref.DLG_PORT));
	
	// Guardar el documento
	doc.save();

	execNext();

	//#ifdef DEBUG_MODPREF
	//# System.out.println("ModPref::formGoToNext() EXITING");
	//#endif
    }

    protected void formGoToExit() {
	execBack();
    }
    
}
